//
//  CRenren.m
//  HotDisPlus
//
//  Created by yilong zhang on 12-7-5.
//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.
//

#import "CRenren.h"

@implementation CRenren

@synthesize m_RenrenClt;
@synthesize delegate;

static CRenren  *g_Instance;          //全局

+(id)allocWithZone:(NSZone *)zone
{
    @synchronized(self)
    {
        if (nil == g_Instance)
        {
            g_Instance = [super allocWithZone:zone];
        }
    }
    
    return g_Instance;
}

+(CRenren*)DefaultRenren
{
    if (nil == g_Instance)
    {
        g_Instance = [[CRenren alloc] init];
    }
    
    return g_Instance;
}

+(void)DestroyRenren
{
    [g_Instance release];
    g_Instance = nil;
}

- (id)init
{
    self = [super init];
    if (self)
    {
        // Initialization code here.
        self.m_RenrenClt = [Renren sharedRenren];
    }
    
    return self;
}

-(void)dealloc
{
    [m_RenrenClt release];
    
    [super dealloc];
}

-(void)LoginRenren:(UIViewController*)parent Name:(NSString*)name
{
    NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
	NSArray* graphCookies = [cookies cookiesForURL:
                             [NSURL URLWithString:@"http://graph.renren.com"]];
	
	for (NSHTTPCookie* cookie in graphCookies) {
		[cookies deleteCookie:cookie];
	}
	NSArray* widgetCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://widget.renren.com"]];
	
	for (NSHTTPCookie* cookie in widgetCookies) {
		[cookies deleteCookie:cookie];
	}
    
    if (![m_RenrenClt isSessionValid])
    {
        [m_RenrenClt authorizationWithPermisson:[NSArray arrayWithObjects:@"read_user_album",@"status_update",@"photo_upload",@"publish_feed",@"create_album",@"operate_like",nil] andDelegate:self];
    }
    else 
    {
        [self LoginRenrenSuc];
    }
}

-(void)LoginRenrenSuc
{
    [delegate DidLoginRenren:self State:0];
}

-(void)ShareToRenren:(NSString*)content ImageFile:(UIImage*)file
{
    [m_RenrenClt publishPhotoSimplyWithImage:file caption:content];
}

- (void)renren:(Renren *)renren requestDidReturnResponse:(ROResponse*)response
{
    //
}

/**
 * 接口请求失败，第三方开发者实现这个方法
 * @param renren 传回代理服务器接口请求的Renren类型对象。
 * @param response 传回接口请求的错误对象。
 */
- (void)renren:(Renren *)renren requestFailWithError:(ROError*)error
{
    //
}

/**
 * renren取消Dialog时调用，第三方开发者实现这个方法
 * @param renren 传回代理授权登录接口请求的Renren类型对象。
 */
- (void)renrenDialogDidCancel:(Renren *)renren
{
    //
}
/**
 * 授权登录成功时被调用，第三方开发者实现这个方法
 * @param renren 传回代理授权登录接口请求的Renren类型对象。
 */
- (void)renrenDidLogin:(Renren *)renren
{
    [self LoginRenrenSuc];
}

/**
 * 用户登出成功后被调用 第三方开发者实现这个方法
 * @param renren 传回代理登出接口请求的Renren类型对象。
 */
- (void)renrenDidLogout:(Renren *)renren
{
    //
}

/**
 * 授权登录失败时被调用，第三方开发者实现这个方法
 * @param renren 传回代理授权登录接口请求的Renren类型对象。
 */
- (void)renren:(Renren *)renren loginFailWithError:(ROError*)error
{
    //
}

@end
